package com.rockontrol.ele.service.impl;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;

import org.apache.log4j.Logger;

import com.rksp.util.DatabaseUtil;
import com.rksp.util.StringUtil;
import com.rockontrol.ele.pojo.Ma出入库单;
import com.rockontrol.ele.pojo.Ma出入库明细;
import com.rockontrol.ele.pojo.Ma印刷品;
import com.rockontrol.ele.pojo.Ma回收单;
import com.rockontrol.ele.pojo.Ma帐套;
import com.rockontrol.ele.pojo.Ma材料加工单;
import com.rockontrol.ele.pojo.Ma材料加工单明细;
import com.rockontrol.ele.pojo.Ma物资库存;
import com.rockontrol.ele.pojo.Ma移交单;
import com.rockontrol.ele.pojo.Ma综合物品;
import com.rockontrol.ele.service.MaOtherSvc;
import com.rockontrol.ele.service.MaStorageSvc;
import com.rockontrol.ele.service.model.dbtransaction.MaOtherTrans;
import com.rockontrol.ele.service.model.dbtransaction.MaStorageTrans;
import com.rockontrol.ele.service.model.dbtransaction.impl.MaStorageTransImpl;
import com.rockontrol.ele.service.skeleton.MaOtherSvcSkeleton;
import com.rockontrol.ele.vo.MaApplianceCdt;
import com.rockontrol.ele.vo.MaRecoverCdt;
import com.rockontrol.ele.vo.MaTransferCdt;
import com.rockontrol.ele.vo.MaterialMachiningCdt;
import com.rockontrol.ele.vo.MaterialMachiningSummarizingCdt;
import com.rockontrol.ele.vo.MaterialStatistics;
import com.rockontrol.ele.vo.MaterialStatisticsCdt;
import com.rockontrol.ele.vo.PrintPaperCdt;
import com.rockontrol.ele.vo.SummarizingMaterialMachiningCdt;

public class MaOtherSvcImpl extends MaOtherSvcSkeleton implements MaOtherSvc{
    private static Logger log = Logger.getLogger(MaOtherSvcImpl.class);
    private MaOtherTrans maOtherTrans;
	/**
     * 创建一个材料加工单记录
     * @param mm_
     * @return String材料加工单OID,    NULL 空
     */
    public String createTheMaterialMachining (Ma材料加工单 mm_){
    	try {
			return maOtherTrans.serviceCreateTheMaterialMachining(mm_);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 获取一个材料加工单信息及加工单明细信息
     * @param id_
     * @return MA材料加工单 材料加工单, NULL 失败
     */
    public Ma材料加工单 getTheMaterialMachining (String id_){
    	try {
    		Ma材料加工单 mm_=(Ma材料加工单) service.findObj(Ma材料加工单.class, id_);
    		mm_.setDetailList(service.findObjsHQL("from Ma材料加工单明细 a where a.加工单id='"+id_+"'"));
			return mm_;
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据材料配件需求计划查询条件获取分页材料配额件需求计划集
     * @param cdt_
     * @param roll_
     * @return String 更改后的分页对象
     */
    public String pageInitGetMaterialMachinings (MaterialMachiningCdt cdt_, String roll_){
        String dataBaseType = DatabaseUtil.getDataBaseType(dataSource);
    	try {
			StringBuffer sql=new StringBuffer();
			sql.append("from Ma材料加工单 a where 1=1 ");
			if(cdt_!=null){
				if(!StringUtil.isEmpty(cdt_.getDepartment())){
					sql.append(" and a.加工厂商 like '%").append(cdt_.getDepartment()).append("%'");
				}
				if(!StringUtil.isEmpty(cdt_.getStartDate())){
				    if("SQLSERVER".equals(dataBaseType)){
				        //数据库为sqlserver时执行的操作
				        sql.append(" and a.录入时间 >= '").append(cdt_.getStartDate()).append("'");
    				}else if("ORACLE".equals(dataBaseType)){
    				        //数据库为oracle时执行的操作
    				    sql.append(" and a.录入时间>= to_date('").append(cdt_.getStartDate()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
    				}
				}
				if(!StringUtil.isEmpty(cdt_.getEndDate())){
				    if("SQLSERVER".equals(dataBaseType)){
				        //数据库为sqlserver时执行的操作
				        sql.append(" and a.录入时间 <= '").append(cdt_.getEndDate()).append("'");
    				}else if("ORACLE".equals(dataBaseType)){
    				        //数据库为oracle时执行的操作
    				    sql.append(" and a.录入时间<= to_date('").append(cdt_.getEndDate()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
    				}
				}
				if(!StringUtil.isEmpty(cdt_.getMachiningWay())){
					sql.append(" and a.加工方式 like '%").append(cdt_.getMachiningWay()).append("%'");
				}
				if(!StringUtil.isEmpty(cdt_.getState())){
					sql.append(" and a.状态 = '").append(cdt_.getMachiningWay()).append("'");
				}
			}
			sql.append(" order by a. 录入时间 desc");
			return pageFind(roll_, sql.toString());
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 删除一个材料加工单记录信息以及该加工单号下的加工单明细及加工单文档
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteTheMaterialMachining (String id_){
    	try {
			return maOtherTrans.serviceDeleteTheMaterialMachining(id_);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return false;
		}
    }
	private Ma帐套 getTheMaterialAccount(String id_, String type) {
		if (StringUtil.isEmpty(id_) || StringUtil.isEmpty(type))
			return null;
		List<Ma帐套> list = service.findObjsHQL("from Ma帐套 a where a.单位id='"
				+ id_ + "' and a.类型分类名='" + type + "' and a.类型='实体库'");
		return list.isEmpty() ? null : list.get(0);
	}
    /**
     * 在确定后进行修改库存操作
     * @param oisr_
     * @return
     */
    public Boolean serviceUpdateCount(Ma材料加工单 oisr_) {
		Boolean flag=true;
    	try {
			Ma帐套 in = null;
			Ma帐套 out = null;
			in = getTheMaterialAccount(oisr_.get录入单位id(), "设备");
			out = getTheMaterialAccount(oisr_.get录入单位id(),  "设备");
			// 添加明细
			if (oisr_.getDetailList() != null) {
				for (Ma材料加工单明细 ma材料加工单明细 : oisr_.getDetailList()) {
					if ("成品".equals(ma材料加工单明细.getType())) {
						// 增加没有的物资库存量
						List<Ma物资库存> list = service.findObjsHQL("from Ma物资库存 a where a.帐套id='"
										+ in.getOid() + "' and a.物资分类id='"
										+ ma材料加工单明细.get加工件分类id() + "' and a.规格型号id='"
										+ ma材料加工单明细.get规格型号id() + "'");
						if (list == null || list.isEmpty()) {
							Ma物资库存 ma物资库存 = new Ma物资库存();
							ma物资库存.set帐套id(in.getOid());
							ma物资库存.set分类编码(ma材料加工单明细.get分类编码());
							ma物资库存.set单价(ma材料加工单明细.get总费用());
							ma物资库存.set单位(ma材料加工单明细.get单位());
							ma物资库存.set厂商id(oisr_.get加工厂商id());
							ma物资库存.set厂商名称(oisr_.get加工厂商());
							ma物资库存.set台帐单位(in.get部门单位());
							ma物资库存.set台帐单位id(in.get单位id());
							ma物资库存.set台帐单位编码(in.get单位编码());
							ma物资库存.set库存量(new BigDecimal(0.0));
							ma物资库存.set录入人(oisr_.get录入人姓名());
							ma物资库存.set录入人id(oisr_.get录入人id());
							ma物资库存.set录入时间(oisr_.get录入时间());
							ma物资库存.set物资分类(ma材料加工单明细.get加工件分类());
							ma物资库存.set物资分类id(ma材料加工单明细.get加工件分类id());
							ma物资库存.set规格型号(ma材料加工单明细.get规格型号());
							ma物资库存.set规格型号id(ma材料加工单明细.get规格型号id());
							ma物资库存.set规格流水号(ma材料加工单明细.get规格流水号());
							ma物资库存.set阀值上限(null);
							ma物资库存.set阀值下限(null);
							service.addObj(ma物资库存);
						}else{
							//修改一存在物资的库存
							double inCount = ma材料加工单明细.get总费用().doubleValue();
							service.execHQL("update Ma物资库存 a set a.单价=(a.单价*a.库存量+"+ inCount + ")/(a.库存量+ "+ ma材料加工单明细.get完工数量().doubleValue()
							+ "), a.库存量=a.库存量+"
							+ ma材料加工单明细.get完工数量().doubleValue()
							+ "  where a.帐套id='" + in.getOid()
							+ "' and a.物资分类id='" + ma材料加工单明细.get加工件分类id()
							+ "' and a.规格型号id='" + ma材料加工单明细.get规格型号id()
							+ "'");
						}
					}else{
						//如果是原材料减少库存
						service.execHQL("update Ma物资库存 a set a.库存量=a.库存量-"
								+ ma材料加工单明细.get完工数量().doubleValue()
								+ " where a.帐套id='" + out.getOid()
								+ "' and a.物资分类id='" + ma材料加工单明细.get加工件分类id()
								+ "' and a.规格型号id='" + ma材料加工单明细.get规格型号id()
								+ "'");
					}
					
				}
			}
			oisr_.setIsdone("Y");
			maOtherTrans.serviceUpdateTheMaterialMachining(oisr_);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}
    
    /**
     * 修改一个材料加工单记录包含明细信息
     * @param mm_
     * @return True 成功,   False 失败
     */
    public Boolean updateTheMaterialMachining (Ma材料加工单 mm_){
    	try {
			return maOtherTrans.serviceUpdateTheMaterialMachining(mm_);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 创建一个加工汇总单
     * @param mm_
     * @param cdt_
     * @return MA材料加工单 材料加工汇总单,   NULL 失败
     */
    public Ma材料加工单 createTheSummarizingMaterialMachining (Ma材料加工单 mm_ , MaterialMachiningSummarizingCdt cdt_){
    	return null;
    }
    
    /**
     * 删除一个材料加工汇总单记录信息以及该加工汇总单号下的汇总明细
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteTheSummarizingMaterialMachining (String id_){
    	return null;
    }
    
    /**
     * 获取一个材料加工汇总单信息及汇总单明细信息
     * @param id_
     * @return MA材料加工单 材料加工单, NULL 失败
     */
    public Ma材料加工单 getTheSummarizingMaterialMachining (String id_){
    	return null;
    }
    
    /**
     * 从加工单获取资源，构成汇总加工单的基础数据
     * @param cdt_
     * @return List<MA材料加工单> 材料加工单集
     */
    public List<Ma材料加工单> getMaterialSummarizingMachinings(SummarizingMaterialMachiningCdt cdt_){
    	return null;
    }
    
    public String pageInitGetMaterialSummarizingMachinings(SummarizingMaterialMachiningCdt cdt_,String roll_){
    	return null;
    }
    
    /**
     * 从加工单获取资源，查询材料加工统计数据集
     * @param cdt_
     * @return List<MaterialStatistics> 材料加工统计数据集
     */
    public String getMaterialStatisticses(MaterialStatisticsCdt cdt_,String roll){
    	try {
        	StringBuffer sql=new StringBuffer();
        	String dataBaseType = DatabaseUtil.getDataBaseType(dataSource);
        	if("SQLSERVER".equals(dataBaseType)){
        	        //数据库为sqlserver时执行的操作
        	    sql.append("select 分类,规格型号,max(单位) 单位,SUM(完工数量) 总量,SUM(总费用) 加工金额,申请单位 as 委托单位, 加工时间 from"); 
                sql.append(" (select a.加工件分类 分类,规格型号,单位,完工数量,a.总费用,b.申请单位,CONVERT(varchar(7),a.加工结束时间,120) as 加工时间 from MA_材料加工单明细 a");
                sql.append(" left join MA_材料加工单 b   on a.加工单ID=b.OID");
                sql.append(" where 1=1 ");
        	}else if("ORACLE".equals(dataBaseType)){
        	        //数据库为oracle时执行的操作
        	    sql.append("select 分类,规格型号,max(单位) 单位,SUM(完工数量) 总量,SUM(总费用) 加工金额,申请单位 as 委托单位, 加工时间 from"); 
                sql.append(" (select a.加工件分类 分类,规格型号,单位,完工数量,a.总费用,b.申请单位,to_char(加工结束时间,'yyyy-mm') as 加工时间 from MA_材料加工单明细 a");
                sql.append(" left join MA_材料加工单 b   on a.加工单ID=b.OID");
                sql.append(" where 1=1 ");
        	}
        	if(cdt_!=null){
        		if(!StringUtil.isEmpty(cdt_.getEmp()))
        			sql.append(" and b.申请单位='").append(cdt_.getEmp()).append("'");
        		if(!StringUtil.isEmpty(cdt_.getType()))
        			sql.append(" and a.加工件分类='").append(cdt_.getType()).append("'");
        	}
        	sql.append(" ) as ss group by 分类,规格型号,申请单位,加工时间");
        	if(cdt_!=null&&!StringUtil.isEmpty(cdt_.getMonth())){
        	    if("SQLSERVER".equals(dataBaseType)){
        	        //数据库为sqlserver时执行的操作
        	        sql.append(" having 加工时间='").append(cdt_.getMonth()).append("'");
            	}else if("ORACLE".equals(dataBaseType)){
            	        //数据库为oracle时执行的操作
            	    sql.append(" having to_char(加工时间,'yyyy-mm-dd')='").append(cdt_.getMonth()).append("'");
            	}
        	}
        	return pageFind(roll, sql.toString(),new HashMap(),4,MaterialStatistics.class);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			e.printStackTrace();
			return null;
		}
    }
    
    /**
     * 创建办公用品回收单
     * @param er_
     * @return String 回收单ID,  NULL 失败
     */
    public String createApplianceRecover(Ma回收单 er_){
    	return null;
    }
    
    /**
     * 
     * 根据回收单ID获取办公用品回收单
     * @param id_
     * @return Ma物资回收单回收单对象,  NULL 失败
     */
    public Ma回收单 getApplianceRecover(String id_){
    	return null;
    }
    
    /**
     * 根据查询条件获取办公用品回收单集
     * @param op_
     * @return List<Ma物资回收单> 回收单对象集,  NULL 失败
     */
    public List<Ma回收单> getApplianceRecovers(MaRecoverCdt op_){
    	return null;
    }
    public String pageInitGetApplianceRecovers(MaRecoverCdt op_,String roll_){
    	return null;
    }
    
    /**
     * 修改设备回收单
     * @param er_
     * @return True 成功,   False 失败
     */
    public Boolean updateApplianceRecover(Ma回收单 er_){
    	return null;
    }
    
    /**
     * 删除办公用品回收单
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteApplianceRecover(String id_){
    	return null;
    }
    
    /**
     * 创建办公用品移交单
     * @param et_
     * @return String 移交单ID,  NULL 失败
     */
    public String createApplianceTransfer(Ma移交单 et_){
    	return null;
    }
    
    /**
     * 根据移交ID获取设备移交信息
     * @param id_
     * @return Ma移交单 移交单, NULL 失败
     */
    public Ma移交单 getApplianceTransfer(String id_){
    	return null;
    }
    
    /**
     * 根据移交单查询条件获取办公用品移交信息集
     * @param op_
     * @return List<Ma移交单> 移交单集,  NULL 失败
     */
    public List<Ma移交单> getApplianceTransfers(MaTransferCdt op_){
    	return null;
    }
    public String pageInitGetApplianceTransfers(MaTransferCdt op_,String roll_){
    	return null;
    }
    
    /**
     * 修改办公用品移交单
     * @param et_
     * @return True 成功,   False 失败
     */
    public Boolean updateApplianceTransfer(Ma移交单 et_){
    	return null;
    }
    
    /**
     * 根据移交单ID删除办公用品移交单
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deleteApplianceTransfer(String id_){
    	return null;
    }
    
    /**
     * 创建印刷品信息
     * @param pp_
     * @return String 印刷品id,  NULL 失败
     */
    public String createPrintPaper(Ma印刷品 pp_){
    	try {
			service.addObj(pp_);
			return pp_.getOid();    		
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据id查询印刷品信息
     * @param id_
     * @return Ma印刷品 印刷品, NULL 失败
     */
    public Ma印刷品 getPrintPaper(String id_){
    	try {
    		Ma印刷品 pp_=(Ma印刷品) service.findObj(Ma印刷品.class,id_);
			return pp_;    		
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    /**
     * 根据查询条件查询印刷品信息
     * @param opt_
     * @return List<Ma印刷品> 印刷品记录集, NULL 失败
     */
    public List<Ma印刷品> getPrintPapers(PrintPaperCdt opt_){
    	try {
			return service.findObjsHQL(getPrintPapersSql(opt_));
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    public String pageInitGetPrintPapers(PrintPaperCdt opt_,String roll_){
    	try {
			return pageFind(roll_,getPrintPapersSql(opt_));
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
    }
    
    private String getPrintPapersSql(PrintPaperCdt opt_){
        String dataBaseType = DatabaseUtil.getDataBaseType(dataSource);
    	StringBuffer sql=new StringBuffer();
    	sql.append("from Ma印刷品 a where 1=1 ");
    	if(opt_!=null){
    		if(!StringUtil.isEmpty(opt_.get名称())){
    			sql.append(" and a.印刷品名称 like '%").append(opt_.get名称()).append("%'");
    		}
    		if(!StringUtil.isEmpty(opt_.get类型())){
    			sql.append(" and a.印刷品类型 = '").append(opt_.get类型()).append("'");
    		}
    		if(!StringUtil.isEmpty(opt_.get开始时间())){
    		    if("SQLSERVER".equals(dataBaseType)){
    		        //数据库为sqlserver时执行的操作
    		        sql.append(" and a.申请时间 >= '").append(opt_.get开始时间()).append("'");
        		}else if("ORACLE".equals(dataBaseType)){
        		        //数据库为oracle时执行的操作
        		    sql.append(" and a.申请时间>= to_date('").append(opt_.get开始时间()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
        		}
    		}
    		if(!StringUtil.isEmpty(opt_.get结束时间())){
    		    if("SQLSERVER".equals(dataBaseType)){
    		        //数据库为sqlserver时执行的操作
    		        sql.append(" and a.申请时间 <= '").append(opt_.get结束时间()).append("'");
        		}else if("ORACLE".equals(dataBaseType)){
        		        //数据库为oracle时执行的操作
        		    sql.append(" and a.申请时间 <= to_date('").append(opt_.get结束时间()).append(" 23:59:59','yyyy-mm-dd hh24:mi:ss')");
        		}
    		}
    		if(!StringUtil.isEmpty(opt_.get申请单位ID())){
    		    sql.append(" and a.申请单位id = '").append(opt_.get申请单位ID()).append("'");
    		}
    	}
    	return sql.toString();
    }
    /**
     * 修改印刷品信息
     * @param pp_
     * @return True 成功,   False 失败
     */
    public Boolean updatePrintPaper(Ma印刷品 pp_){
    	try {
			service.modifyObj(pp_);
			return true;
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return false;
		}
    }
    
    /**
     * 删除印刷品信息
     * @param id_
     * @return True 成功,   False 失败
     */
    public Boolean deletePrintPaper(String id_){
    	try {
			service.removeObj(Ma印刷品.class,id_);
			return true;
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return false;
		}
    }
    
    
    public String pageNumMaOther(String roll_,Integer num_){
    	try {
			return pageNum(roll_, num_);
		} catch (Exception e) {
			log.error(e.getMessage());
			return null;
		}
    }
    
    public MaOtherTrans getMaOtherTrans() {
		return maOtherTrans;
	}

	public void setMaOtherTrans(MaOtherTrans maOtherTrans) {
		this.maOtherTrans = maOtherTrans;
	}

	public String createApplianceThings(Ma综合物品 th) {
		try {
			service.addObj(th);
			return th.getOid();
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
	}

	public Boolean deleteApplianceThings(String id) {
		try {
			 service.execHQL("delete from Ma综合物品  a where a.oid='"+id+"'");
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}


	public Boolean updateApplianceThings(Ma综合物品 th) {
		try {
			service.modifyObj(th);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	public Boolean updateggTransfer(Ma移交单 et) {
		return null;
	}

	public List<Ma综合物品> getApplianceThings(MaApplianceCdt cdt) {
		try {
			return service.findObjsHQL(getApplianceThingsSQL(cdt));
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
	}
	
	public String getApplianceThingsSQL(MaApplianceCdt cdt){
		StringBuffer sql=new StringBuffer("from Ma综合物品  a where 1=1 ");
		if(cdt!=null){
			if(!StringUtil.isEmpty(cdt.get使用单位())){
				sql.append("and a.使用单位 like '%"+cdt.get使用单位()+"%' ");
			}
			if(!StringUtil.isEmpty(cdt.get帐套ID())){
				sql.append("and a.帐套id = '"+cdt.get帐套ID()+"' ");
			}
			if(!StringUtil.isEmpty(cdt.get物资分类())){
			    sql.append("and a.分类名称 like '%"+cdt.get物资分类()+"%' ");
			}
			if(!StringUtil.isEmpty(cdt.get分类id())){
			    sql.append("and a.分类id = '"+cdt.get分类id()+"' ");
			}
			if(!StringUtil.isEmpty(cdt.get型号id())){
			    sql.append("and a.型号id = '"+cdt.get型号id()+"' ");
			}
			if(!StringUtil.isEmpty(cdt.get物品编码())){
			    sql.append("and a.物品编码 = '"+cdt.get物品编码()+"' ");
			}
			if(!StringUtil.isEmpty(cdt.get物品状态())){
				sql.append("and a.物品状态 like '%"+cdt.get物品状态()+"%' ");
			}
			if(!StringUtil.isEmpty(cdt.get责任人())){
				sql.append("and a.责任人 = '"+cdt.get责任人()+"' ");
			}
		}
		return sql.toString();
	}

	public String pageInitApplianceThings(MaApplianceCdt opt, String roll) {
		try {
			return pageFind(roll,getApplianceThingsSQL(opt));
		} catch (Exception e) {
			log.error(e.getMessage(),e);
			return null;
		}
	}

	public Ma综合物品 getApplianceThingsById(String id) {
		try {
			return (Ma综合物品)service.findObj(Ma综合物品.class, id);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		
	}
	 public Ma印刷品 getPrintPaperByBindId(String bindid){
	        try {
	            Ma印刷品 ma印刷品=(Ma印刷品) service.findObjsHQL("from Ma印刷品 bf where bf.bindId='"+bindid+"'").get(0);
	            return ma印刷品;
	        } catch (Exception e) {
	            log.error(e.getMessage());
	            return null;
	        }
	    }

	
	 /**
     * 根据设备分类获取最大的设备编码
     * @param typeid
     * @return String 设备编码, NULL 失败
     */
    public String getThingsCodeByType(String typeid,String modelid){
        try {
			StringBuffer sql=new StringBuffer("select max(a.物品编码) from MA_综合物品 a where 1=1");
			if(!StringUtil.isEmpty(typeid))
				sql.append(" and a.分类ID ='").append(typeid).append("'");
			if(!StringUtil.isEmpty(modelid))
				sql.append(" and a.型号ID ='").append(modelid).append("'");
			List list=service.findSQL(sql.toString());
			if(list.size()>0)
				return (String) list.get(0);
		} catch (Exception e) {
			log.error(e.getMessage(),e);
		}
		return null;
    }

}
